﻿using System;
using System.Collections.Generic;
using DefaultArchitecture.Exception;

namespace DefaulArchitecture.Message
{
    public class UIMessage
    {
        #region Properties
        
        List<string> messages;
        public List<string> Messages
        {
            get { return messages = messages ?? new List<string>(); }
            set { messages = value; }
        }

        public TipoMensagem Tipo { get; set; } 

        #endregion

        #region Construtores

        public UIMessage(string Message, TipoMensagem tipo = TipoMensagem.Sucesso)
        {
            this.Tipo = tipo;
            this.Messages.Add(Message);
        }

        public UIMessage(System.Exception ex, TipoMensagem tipo = TipoMensagem.Erro)
        {
            if (ex is CustomException)
            {
                this.Tipo = tipo;
                if ((ex as CustomException).Messages.Count > 0)
                    this.Messages.AddRange((ex as CustomException).Messages);
                else
                    this.Messages.Add((ex as CustomException).Message);
            }
            else
            {                
                this.Messages.Add("Erro inesperado ao realizar operação. Por favor, tente novamente. Caso o erro persista, Entre em contato com o administrador do sistema.");
            }
        } 

        #endregion
    }
}